package LC;

import java.util.Arrays;

/**
 * https://leetcode.com/problems/plus-one/description/
 * Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.
 * You may assume the integer do not contain any leading zero, except the number 0 itself.
 * The digits are stored such that the most significant digit is at the head of the list.
 */
public class LC_066_PlusOne_Array {
    public static void main(String[] args) {
        int[] res = Solution.plusOne(new int[]{9, 9, 99});
        System.out.println(Arrays.toString(res));
    }

    static class Solution {
        static int[] plusOne(int[] digits) {
            int length = digits.length;
            int[] res;
            if (length <= 0)
                return digits;

            int carry = 1;
            for (int i = length - 1; i >= 0; i--) {
                int val = digits[i] + carry;
                carry = val / 10;
                digits[i] = val % 10;

                if (carry == 0)
                    return digits;
            }

            if (carry > 0) {
                res = new int[length + 1];
                res[0] = carry;
                return res;
            } else
                return digits;
        }
    }
}
